home *** CD-ROM | disk | FTP | other *** search
/ Aminet 45 / Aminet 45 (2001)(GTI - Schatztruhe)[!][Oct 2001].iso / Aminet / util / gnu / cvs-1.11.1p1.lha / README.AMIGA < prev   
Encoding:
Text File  |  2001-08-05  |  17.4 KB  |  367 lines

  1. CVS 1.11.1p1 Amiga port (05 August 2001)
  2. ========================================
  3.  
  4. Introduction
  5. ------------
  6. This is a somewhat rough port of GNU CVS 1.11.1p1, a version control system, which
  7. allows you to keep old versions of files (usually source code), keep a log of
  8. who, when, and why changes occurred, etc., like RCS or SCCS. It handles
  9. multiple developers, multiple directories, triggers to enable/log/control
  10. various operations, and can work over a wide area network. The following tasks
  11. are not included; they can be done in conjunction with CVS but will tend to
  12. require some script-writing and software other than CVS: bug-tracking, build
  13. management (that is, make and make-like tools), and automated testing. (Quoted
  14. from the CVS documentation.)
  15.  
  16. I call this a 'rough port' since it is not as polished as, say Heinz Wrobel's
  17. excellent 'RCS' port. It does what it needs to do, but a few features are
  18. sorely lacking, such as support for Amiga file protection bits. On the other
  19. hand, however, you get everything, and perhaps more, you got with the previous
  20. Amiga ports of CVS: this port does not require 'ixemul.library' to work and it
  21. does not require an RCS installation as it is completely self contained. The
  22. port also probably would win a price as the largest 'pure' executable; it can
  23. be made resident.
  24.  
  25.  
  26. What's in this package?
  27. -----------------------
  28. This distribution contains the Amiga port, the Amiga specific source code and
  29. most of the original GNU CVS 1.11.1p1 distribution. 'Most' in this case means that
  30. only the original source code has been omitted in order to keep the
  31. distribution archive small; the documentation and support files are all
  32. provided. The original source code can be downloaded from the Internet at
  33. 'ftp://ftp.cvshome.org/pub/cvs-1.11.1p1/cvs-1.11.1p1.tar.gz'. I have added two more
  34. files which are converted from the original Unix man pages, namely 'cvs.1.man'
  35. and 'cvs.5.man' whose sources can be found in the 'cvs-1.11.1p1/man' directory.
  36.  
  37.  
  38. Installation; the easy part
  39. ---------------------------
  40. Almost everything you need to get CVS up and running is contained in the
  41. archive which also included the 'README.AMIGA' file you are currently reading.
  42. And that means the 'cvs' executable. You will also need a working
  43. 'queue-handler' (the one that ships with Workbench 3.1 and beyond is,
  44. unfortunately, broken) which can be found on Aminet (you can find the archive
  45. at 'http://us.aminet.net/pub/aminet/util/sys/HWGQueue.lha'). A TCP/IP stack
  46. like Miami or AmiTCP is supported but not strictly required: you can perfectly
  47. well keep your CVS repository on your local machine. Since CVS may ask you to
  48. edit the log entries associated with the files to store, you may want to
  49. configure the 'EDITOR' environment variable. Last, but not least, you must set
  50. up an environment variable which allows CVS to associate you with the changes
  51. you made; this should be the 'USER', 'LOGUSER' or 'USERNAME' variable.
  52.  
  53. Most importantly, this port requires Kickstart 2.04 or higher.
  54.  
  55. Here is how you could set up CVS on your machine. We start by creating two
  56. drawers on the 'Work:' volume:
  57.  
  58.    MakeDir Work:CVS-Root
  59.    MakeDir Work:CVS-Home
  60.  
  61. Next, we add two lines to the 'S:User-Startup' file:
  62.  
  63.    Assign CVSHOME: Work:CVS-Home
  64.    Path CVSHOME: Add
  65.  
  66. The CVS program will need to be copied:
  67.  
  68.    Copy cvs Work:CVS-Home CLONE
  69.  
  70. And the path to the CVS repository needs to be set:
  71.  
  72.    SetEnv CVSROOT :local:Work:CVS-Root
  73.    Copy ENV:CVSROOT ENVARC:
  74.  
  75. Two environment variables need to be set up. Most importantly, CVS will need
  76. your ID to write it into the log and revision files it creates. The Amiga port
  77. will query three environment variables for that information, in the following
  78. order: 'USER', 'LOGUSER' and 'USERNAME'. This means if the variable 'USER' is
  79. not set, it will proceed to check whether 'LOGUSER' is set, and so forth. You
  80. may have already configured these variables, but if you haven't, I suggest you
  81. set up the 'LOGUSER' variable, like this:
  82.  
  83.    SetEnv LOGUSER <Your ID here>
  84.    Copy ENV:LOGUSER ENVARC:
  85.  
  86. Note that <Your ID here> should be replaced by a mnemonic, nick name or short
  87. name that must not contain any blank space characters.
  88.  
  89. You may want to configure the 'EDITOR' environment variable to invoke your
  90. preferred text editor when CVS requests that log messages are added for an
  91. update. If this variable is not set, CVS will default to invoke the 'Ed'
  92. editor. This can be problematic if you have installed 'CygnusEd' whose 'Ed'
  93. program detaches from the Shell that invoked it. When CVS invokes the editor,
  94. it expects it to return only when the user has finished editing the respective
  95. file. Here is an example configuration for CygnusEd:
  96.  
  97.    SetEnv EDITOR Ed -keepio
  98.  
  99. And here is one for TurboText:
  100.  
  101.    SetEnv EDITOR TTX WAIT
  102.  
  103. Don't forget to save the environment variable setting to make it permanent,
  104. like this:
  105.  
  106.    Copy ENV:EDITOR ENVARC:
  107.  
  108. Finally, install the 'queue-handler' from Aminet and reboot your machine. When
  109. the system is again up and running, initialize the CVS repository like this:
  110.  
  111.    cvs init
  112.  
  113. And that's all. Well, maybe you want to add a few default options to the
  114. configuration file CVS reads upon startup. That file should be placed in the
  115. 'CVSHOME:' directory and called '.cvsrc'.
  116.  
  117.  
  118. Networked operation and SSH
  119. ---------------------------
  120. This CVS port includes built-in remote shell (rsh) and secure shell (ssh)
  121. client code, which allows you to exchange files with networked, non-local CVS
  122. repositories. To use a remote repository, you will need to change the name of
  123. the CVS root directory. For a local repository, you would use the following
  124. commands to set it up, like this:
  125.  
  126.    SetEnv CVSROOT :local:Work:CVS-Root
  127.    Copy ENV:CVSROOT ENVARC:
  128.  
  129. But if the repository were on a remote machine, you would use something like
  130. this:
  131.  
  132.    SetEnv CVSROOT :server:login@host:/usr/local/cvsroot
  133.    Copy ENV:CVSROOT ENVARC:
  134.  
  135. In that example, you would replace 'login' with your account name on the
  136. networked machine called 'host'; the '/usr/local/cvsroot' refers to the fully
  137. qualified name of the CVS root directory. Note that for this to work, you need
  138. to have a shell login account on the remote machine, and that machine must be
  139. configured to allow for remote shell login. As the remote shell login is
  140. rather risky and insecure, most sites will have it disabled. Bad luck, but
  141. there is an alternative: secure shell. This feature allows you to connect to a
  142. remote repository as with a remote shell login, except that the connection is
  143. made in a much secure fashion using encrypted data channels. This process
  144. requires that you have a login password handy, for which the CVS port will
  145. prompt you before it connects to the remote. To activate the secure shell
  146. feature, you would set an environment variable, like this:
  147.  
  148.    SetEnv CVS_RSH ssh
  149.  
  150. This will cause the built-in secure shell (ssh) client to be used in place of
  151. the remote shell (rsh) client. The secure shell client implementation is a
  152. stripped down, simplified version of the real thing, the full-blown version,
  153. which supports more different and more secure encryption algorithms. What this
  154. version can do is just about the bare minimum, which means that it supports
  155. only two block cipher algorithms ('Triple DES' and 'Blowfish') and that the
  156. initial public key exchange is not as fast as it could be. It also only
  157. supports version 1.5 of the secure shell protocol. By default, the ssh client
  158. will resort to 'Triple DES' for encryption and decryption. To choose the
  159. 'Blowfish' algorithm instead (which runs faster than 'Triple DES'), use the
  160. following environment variable:
  161.  
  162.    SetEnv CVS_SSH_CIPHER blowfish
  163.  
  164. Not all secure shell server implementations support the 'Blowfish' algorithm,
  165. but all servers are required to support 'Triple DES'. Thus, if you cannot
  166. connect to a server which aborts the protocol negotiation, it may be that it
  167. does not understand the choice of encryption algorithm.
  168.  
  169. CAUTION: The majority of the CVS documentation I know recommends to use the
  170.          keyword ':ext:' in place of ':server:' for communicating with a
  171.          networked CVS installation -- this will *NOT* work with this Amiga
  172.          port. What does work are the built-in rsh and ssh clients, and these
  173.          require that you use the ':server:' keyword when specifying the name
  174.          of the CVS root directory. Therefore the :ext: method is disabled
  175.          in this port !
  176.  
  177. By default, the SSH client will attempt to connect to the server on port 22.
  178. This not always desirable, especially for custom SSH configurations. You can
  179. override this default choice of the port number using yet another environment
  180. variable, like this:
  181.  
  182.    SetEnv CVS_SSH_PORT 33194
  183.  
  184. Lets say some words on the implemented authentications system used in this
  185. Amiga CVS port. First of all normally if you use the internal ssh client of this
  186. port you will have to enter the password on every cvs action your perform to
  187. the repository. This is also the case for other cvs implementation on other
  188. platforms, so we considered this as the standard implementation. So there is
  189. normally no way to save this password in a password file like for the :pserver:
  190. method and the accordingly .cvspass file mechanism.
  191.  
  192. As some users brought up the fact that this could be quite annoying if you
  193. regulary checkout from different servers within a script we considered to
  194. implement a possibility to save the authenticated password along with cvsroot
  195. string to a .cvspass like file structure.
  196. If you want to use this feature you have to specify the following environment
  197. variable:
  198.  
  199.     SetEnv CVS_SSH_PASSFILE CVSHOME:.sshpass
  200.  
  201. But before you are going to use this feature let me first talk about the security
  202. aspects of this feature. As you normally use the ssh connection for security
  203. reasons it will break you security effort while using ssh together with cvs if
  204. you are going to use this PASSFILE feature because the encryption that is used
  205. in this PASSFILE is absolutly NOT secure and if someone has access to this
  206. passfile he is able to decrypt your password without any effort because this
  207. encryption is really NO real encryption at all.
  208.  
  209. CAUTION:   PLEASE NOTE THAT THIS BRINGS DOWN THE SECURITY ASPECTS OF SSH AND
  210.            IF SOMEONE HAS ACCESS TO THIS PASSFILE HE HAS THE POSSIBILITY TO
  211.            DECRYPT THE PASSWORD !!! SO THIS IS INSECURE LIKE :PSERVER: AND
  212.            EVERYONE IS ENCOURAGED NOT TO USE THIS FEATURE AND KEEP ENTERING
  213.            THE PASSPHRASE AT THE PROMPT !!
  214.  
  215. So you should only use this feature if you really don`t care about security
  216. or if you can make sure that no other person has access to your computer.
  217. At least I would suggest to place this passfile in a uncommon directory away
  218. from standard pathes like S: or something like this. Also you should not mix the
  219. :pserver: based .cvspass file with this .sshpass file, because this can beside
  220. from the security aspects result in a unknown behaviour of cvs.
  221.  
  222. Last but not least, a word on data compression. The SSH specification allows
  223. for data to be compressed before it is encrypted. This functionality is not
  224. implemented in the reduced SSH implementation which is part of this Amiga CVS
  225. port. This sounds like a disadvantage, but it need not to be. In fact, CVS can
  226. use data compression for data exchange, and the SSH layer on top of it could
  227. not have compressed this data any further. That's entropy for you...
  228.  
  229.  
  230.  
  231. Usage
  232. -----
  233. I personally found the default CVS documentation to be rather confusing. If
  234. you don't know rather well what CVS is good for, then the examples, the
  235. terminology, all this doesn't seem to make great sense. My introduction to CVS
  236. followed with Karl Fogel's book "Open Source Development with CVS" which
  237. describes in compact form what CVS is and how it may be used. I suggest that
  238. you consult the book (portions of which are available from 'www.coriolis.com')
  239. and/or the CVS documentation (which has been included with this archive in the
  240. 'cvs-1.11/doc' drawer) for hints and ideas on how to use the program. I would
  241. definitely not recommend that you spend any money on the CVS pocket reference
  242. manual written by Gregor N. Purdy, published by O'Reilly until *after* you
  243. have read an introductory book like Karl Fogel's. By its very nature, even a
  244. good pocket reference manual can only refresh your memory on concepts you have
  245. learned before -- if there is nothing to be refreshed in the first place, it
  246. will not be of any help to you.
  247.  
  248. What many people fail to realize and what keeps them from using CVS in place
  249. of the revision control system they have used for years is that you do not
  250. need a networked CVS repository in order to use CVS. A local repository will
  251. do. In fact, I switched over most of my current software development projects
  252. to use a single local repository after I realized that CVS does much better
  253. what I had previously used RCS for.
  254.  
  255. If you need any further documentation or information about CVS you could also
  256. use http://www.cvshome.org/ as a good search path.
  257.  
  258. Also a good tutorial could be found at:
  259.  
  260. http://cvsbook.red-bean.com/cvsbook.html
  261.  
  262.  
  263. Notes on the implementation
  264. ---------------------------
  265. The Amiga port implements only the client side of the CVS system. This means
  266. that you can check out projects on remote servers but your local Amiga cannot
  267. be a CVS server itself. This feature was omitted deliberately since I could
  268. not find a safe and useful way to make CVS server mode work on the Amiga.
  269. AmigaOS is not a server operating system and shoehorning the code to make it
  270. work somehow would not have helped. If you need a CVS server, try a dedicated
  271. solution using, for example, 'NetBSD'. The Amiga port can communicate with the
  272. server using the remote shell (rsh) and secure shell (ssh) protocols, and I
  273. have verified that the process works reasonably well with, for example, the
  274. public 'Samba' CVS repository.
  275.  
  276. CVS does not have a very sophisticated porting layer. Its file name semantics
  277. all stem from the Unix world and the 'OS/2', 'VMS' and 'Windows NT' ports
  278. merely resort to flipping slashes in file names, if necessary, when it comes to
  279. make a name fit the local system's semantics. I had to find a similar way to
  280. make the semantics work on the Amiga. What I did was to add a translation
  281. service in the Amiga specific code which knows how to translate names like '.'
  282. or '..'. But that's where it ends. Any more sophisticated naming schemes like
  283. 'foo/.././bar' may fail to translate properly. But then, those complex
  284. patterns should be pretty rare anyway.
  285.  
  286. Unlike Heinz Wrobel's excellent 'RCS' port, this CVS port does not preserve
  287. Amiga file protection bits for files checked in. When you check in a project
  288. and check it out again, all file and directory protection bits will default to
  289. 'rwed', losing the 'archived', 'pure' and 'script' bits.
  290.  
  291. The Amiga port will expand wild card patterns for file and directory names
  292. specified as command line parameters, such as "#?.c". The wild card pattern
  293. syntax is that of AmigaDOS. It is *not* the syntax of the standard regular
  294. expressions other GNU tools will use.
  295.  
  296. You can access remote CVS repositories by means of a properly configured
  297. TCP/IP stack. This port requires that the stack complies to the AmiTCP V3 API
  298. definition, which all modern Amiga TCP/IP stacks do. It does not work with the
  299. INet-225 TCP/IP stack, though.
  300.  
  301. When CVS resorts to calling external programs, a working 'PIPE:' device is
  302. required, which is not yet part of the AmigaOS Workbench distribution. Do not
  303. underestimate this. The program will fail or behave erratically without a
  304. working 'PIPE:' device. It is strongly recommended to download a working
  305. 'queue-handler', such as from Aminet.
  306.  
  307. The source code for the Amiga port is included in this distribution. All you
  308. need to know before you can recompile this CVS port is described in the file
  309. 'README.AMIGA' which you can find in the 'source' directory.
  310.  
  311. This is a 'single user' CVS port. There is just one single home directory
  312. (referred to as 'CVSHOME:') and your login name and ID are assumed to be the
  313. same (set in the 'USER', 'LOGUSER' or 'USERNAME' environment variables).
  314.  
  315. There is no 'cvsbug' shell script or program included with this port.
  316.  
  317.  
  318. Known problems and issues
  319. -------------------------
  320.  
  321. 1) Problems with Timezones
  322. It is known that a wrong set TimeZone "ENVARC:TZ" variable could cause
  323. problems while working with CVS. Please make sure that you use a proper time
  324. value in TZ. Something like "0200" for +2 GMT should be fine.
  325.  
  326. 2) Filenames longer than supported filesystem size
  327. Another issue that can produce problems while working with cvs on Amiga is when
  328. you are using remote respositories (:pserver: or :server: method) and in this
  329. repositories are files with larger filenames than your filesystem on your
  330. checkout directory support. This filenames will be truncated to the maximum
  331. size that is allowed. This will cause that you cannot checkin this files again!
  332.  
  333. 3) .cvspass error message with :pserver:
  334. If you use the :pserver: method together with cvs a message like the following
  335. can occur:
  336.  
  337. --- cut here ---
  338. DH0: > cvs login
  339. Logging in to :pserver:damato@linux:2401/data/cvsroot/amiga
  340. CVS password:
  341. cvs login: failed to open CVSHOME:/.cvspass for reading: No such file or directory
  342. cvs [login aborted]: fatal error: exiting
  343. --- cut here ---
  344.  
  345. The solution for this problem is quite simple. Just create a empty ".cvspass" file
  346. in your CVSHOME: directory and next time cvs will use this file to save the
  347. passwords. This is a normal cvs behaviour like in other ports !!
  348.  
  349.  
  350. Contacting the authors
  351. ----------------------
  352. If you have any further questions on this port, feel free to contact us:
  353.  
  354.    Olaf Barthel
  355.    Brabeckstr. 35
  356.    D-30559 Hannover
  357.    Federal Republic of Germany
  358.  
  359.    olsen@sourcery.han.de
  360.  
  361.    Jens Langner
  362.    Lannerstrasse 1
  363.    D-01219 Dresden
  364.    Federal Republic of Germany
  365.  
  366.    Jens.Langner@htw-dresden.de
  367.